On considère une fonction définie sur un intervalle \([~a~;~b~]\). Elle est croissante sur \([~a~;~c~]\) puis décroissante sur \([~b~;~c~]\), où \(c\) est un réel de\(\) \([~a~;~b~]\).
Elle admet donc un maximum sur \([~a~;~b~]\).
Prenons la fonction \(f\) définie par \(f(x)=-(2-x)^2\) sur \([~0~;~4~]\) et cherchons un encadrement à \(10^{-3}\) du maximum de cette fonction sur \([~0~;~4~]\).
def f(x):
return -(2-x)**2 #On peut entrer l'expression de la fonction souhaitée
def balayage(f,a,b,n):
#a et b correspondent aux bornes de l'intervalle et n correspond au nombre de chiffres "après la virgule" souhaités
epsilon=10**(-n)
maxi=f(a)
while b-a>epsilon:
amplitude=b-a
for i in range(21): #On découpe arbitrairement [a ; b] en 20
x=a+amplitude/20*i #calcul des abscisses obtenues en divisant [a ; b] en 10
if f(x)>maxi:
maxi=f(x)
x_max=x
a=x_max-amplitude/10 #On réduit l'intervalle dans lequel on va appliquer
b=x_max+amplitude/10 #à nouveau le balayage jusqu'à la précision demandée
return [round(a,n),round(b,n)]
Source : https://lesmanuelslibres.region-academique-idf.frTélécharger le manuel : https://forge.apps.education.fr/drane-ile-de-france/les-manuels-libres/mathe-matiques-seconde ou directement le fichier ZIPSous réserve des droits de propriété intellectuelle de tiers, les contenus de ce site sont proposés dans le cadre du droit Français sous licence CC BY-NC-SA 4.0 